package com.sq.partner.manager.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.sq.partner.manager.mybatis.model.TradAgentInfo;
import com.sq.partner.manager.mybatis.model.TradInsuPlan;
import com.sq.partner.manager.util.Page;

public interface IGatewayTradInsuPlanDao  extends BaseDao {

	Page<TradInsuPlan> queryTradInsuPlanPage(Page<TradInsuPlan> page) throws SQLException;
	
	
	/**
	 * 方案配置 查询条件 “投保方案” 查询所有 投保方案
	 * @param page
	 * @return
	 * @throws SQLException
	 */
	Page<TradInsuPlan> queryAllTradInsuPlans(Page<TradInsuPlan> page) throws SQLException;
	
	
	/**
	 * 查询 “ 新业务来源”
	 * @param map
	 * @return
	 * @throws Exception
	 */
	List<TradInsuPlan> queryNewBSNS(Map<String,String> map) throws Exception;
	
	
	/**
	 * 添加 “投保方案”
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	boolean addTradInsuPlan(TradInsuPlan insuplan) throws Exception;
	
	
	
	/**
	 * 删除 “投保方案”
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	boolean delTradInsuPlan(TradInsuPlan insuplan) throws Exception;
	
	
	/**
	 * 根据投保方案号，获取该方案详细信息
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	TradInsuPlan queryTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;
	
	/**
	 * 根据投保方案号，获取该方案详细信息map形式
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	Map<String,Object> queryMapTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;

	
	/**
	 * 修改投保方案信息
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	boolean updateTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;
	
	
	
	/**
	 * 获取 “投保方案”的最大方案号，以此作为下个方案号的基础，每次累加1
	 * @param insuplan
	 * @return
	 * @throws Exception
	 */
	TradInsuPlan getMaxInsuPlanNo(TradInsuPlan insuplan) throws Exception;
	List<TradInsuPlan> queryTradInsuPlanByPlanCode(String PlanCode) throws Exception;


	List<TradInsuPlan> queryTradInsuPlanByProdCode(String prodCode)throws SQLException;
	//删除合作伙伴时校验是否关联方案
	boolean isHasExistPlan(String partnerNo) throws Exception;
	
	
	/**
	 * 查询此合作伙伴配置的所有个人类型的代理信息
	 * @param page
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfo(Page<TradAgentInfo> page,Map<String,Object> map) throws Exception;
	
	/**
	 * 查询此合作伙伴配置的所有总对总代理信息
	 * @param page
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfoType4(Page<TradAgentInfo> page,Map<String,Object> map) throws Exception;
	
	/**
	 * 查询此合作伙伴配置的所有个人类型的代理信息edit时
	 * @param channelCode
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfoEdit(Page page,String insuPlanNo) throws Exception;
	
	
	/**
	 * 查询此合作伙伴配置的所有总对总代理edit时
	 * @param channelCode
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfoEditType4(Page page,String insuPlanNo) throws Exception;
	
	boolean updateTradInsuPlanApplicationNo(TradInsuPlan insuplan) throws Exception;
}
